package com.ws;

import org.junit.Test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Date;
import java.util.Scanner;

/*
一、异常体系结构
java.lang.Throwable
    - java.lang.Error：一般不编写针对性的代码进行处理
    - java.lang.Exception：可以进行异常的处理
        - 编译时异常(checked)
            - IOException
                - FileNotFoundException
            - ClassNotFoundException
        - 运行时异常(unchecked)
            - NollPointerException
            - ArrayIndexOutOfBoundsException
            - ClassCaseException

面试题：常见的异常都有哪些？举例说明
 */
public class ExceptionTest {

    /*****************编译时异常*********************/
    @Test
    public void test7() throws IOException {
        File file = new File("hello.txt");
        FileInputStream fis = new FileInputStream(file);

        int data = fis.read();
        while (data != -1) {
            System.out.println(data);
            data = fis.read();
        }

        fis.close();
    }

    /*****************运行时异常*********************/
    @Test
    public void test6() {
        //ArithmeticException
        int a = 10;
        int b = 0;
        System.out.println(a / b);
    }

    @Test
    public void test5() {
        //InputMismatchException
        Scanner in = new Scanner(System.in);
        int score = in.nextInt();
        System.out.println(score);
        in.close();
    }

    @Test
    public void test4() {
        //NumberFormatException
        String str = "123";
        str = "abc";
        int num = Integer.parseInt(str);
    }

    @Test
    public void test3() {
        //ClassCastException
        Object date = new Date();
        String str = (String) date;
    }

    @Test
    public void test2() {
        //ArrayIndexOutOfBoundsException
        int[] arr = new int[10];
        System.out.println(arr[10]);

        //StringIndexOutOfBoundsException
        String str = "abc";
        System.out.println(str.charAt(3));
    }

    @Test
    public void test1() {
        //NollPointerException
        String str = "abc";
        str = null;
        System.out.println(str.charAt(0));
    }
}



